Python NotImplemented 常量
全部标签 我想创建一个只能在其包含方法内部访问的常量。在其他语言中,可能会这样做:voidfunction(){constintMAX=25;intarray[MAX];//DOSOMETHING}voidfunction2(){constintMAX=50;intarray[MAX];//DOSOMETHINGELSE}在这两种方法中,MAX都不是类的全局变量。我相信数据隐藏,我想知道在Ruby中是否有办法做到这一点。我们可以在方法内部创建常量吗? 最佳答案 不,你不能,但即使你可以也没有多大意义,因为Ruby中的常量并不是真正的常量:MY
这个问题在这里已经有了答案:Dynamicconstantassignment(7个答案)关闭1年前。我一直在按照教程创建打字挑战。我已经小心翼翼地遵循了这一点。当我尝试从命令行运行脚本时,我不断收到以下错误,我不明白。我认为该教程可能已经很老了,但是如果有人可以给我一些指导来理解它,以便我可以修复它,那将不胜感激!从命令行运行脚本时出现的错误如下....Typechallenge.rb:89:dynamicconstantassignmentConsole_Screen=Screen.new^typechallenge.rb:90:dynamicconstantassignmentT
假设我有:classMyClassMY_ENUM=[MY_VALUE_1='value1',MY_VALUE_2='value2']end这样的事情是可能的:pMyClass::MY_VALUE_1#=>"value1"为什么?MY_VALUE1和MY_VALUE_2不是[]中的常量作用域吗? 最佳答案 您可以访问嵌套常量MY_VALUE_1,因为它与外部常量MY_ENUM在同一范围内:两个常量都在类MyClass.您希望[...]构造定义一个新范围,但它没有。在Ruby中,只有三件事定义了一个新的范围:使用classSomeNam
我将此代码放入我的Rakefile中,以便能够从附加文件夹“test/classes”(不仅仅是来自test/models、test/controllers等)运行测试:#Addingtest/classesdirectorytoraketest.namespace:testdo#line9desc"Testtests/classes/*code"Rails::TestTask.new(parsers:'test:prepare')do|t|#line11t.pattern='test/classes/**/*_test.rb'endendRake::Task['test:run'].
给定以下代码:classParentCONSTANT="Parent"defself.do_the_thingputsCONSTANTputsself::CONSTANTendendclassChild下面的方法调用:putsParent.do_the_thing#Parent#ParentputsChild.do_the_thing#Parent#Child为什么Child.do_the_thing不打印两次“Child”? 最佳答案 常量查找算法可以简化为:词汇上的“向外”继承“向上”因此,它首先尝试在最接近的词法封闭模块/类定
我有一个字符串,我只想检查它是否是一个“模型”...所以在搜索之后我找到了一种方法:'any_name'.classify.constantize但是...当它不是有效的模型名称时,它会抛出以下错误:NameError(wrongconstantnameAnyName):所以我尝试执行以下操作:ifObject.const_defined?('AnyName')#...end#Ialsotriedthis:Object.const_get('AnyName')但同样,上面的两个选项都返回相同的错误:NameError(wrongconstantnameAnyName):const_de
例如:ABC='abc'DEF='def'XYZ='anything'LIST_ALL=[ABC,DEF,XYZ]如果我这样做LIST_ALL.reject(&:blank?).join(',')#=>"abc,def,anything"我正在寻找的是获取常量名称,而不是它们的值预期输出:LIST_ALL.something()#=>"ABC,DEF,XYZ"方法一:classXABC="abc"DEF="def"GHI=""XYZ="anything"LIST_ALL=%w(ABCDEFGHIXYZ)defself.something()putsLIST_ALL.reject{|c|
我试图在我的一个类中将数组的数组定义为常量,代码如下所示:Constant=[[1,2,3,4],[5,6,7,8]]当我在irb中加载类(class)时,我得到:NoMethodError:undefinedmethod`[]'fornil:NilClass我尝试使用%w,所做的只是将每个都变成一个字符串,所以我得到了“[1,2,3,4]”而不是[1,2,3,4]如何将数组的数组定义为常量?我使用的是ruby1.8.7。当我在IRB中定义常量时它很好,但是当我用它加载类时出现错误。require'file_with_class.rb'NoMethodError:undefined
在当前项目中找到:classVideo通常我使用简单的VALID_VIDEO_HOSTS=%w(...)并且没有任何猜测为什么以前的开发人员使用||=有人知道有什么好处吗?更新我知道||=在一般情况下的作用,问题主要是关于在模型中以这种方式定义常量。 最佳答案 ||=被用作memoizethevalue的廉价方式,正如其他海报所提到的。然而……为什么要记住一个常量?作者很可能在多次加载该源文件时防止警告。(警告:已初始化常量VALID_VIDEO_HOSTS) 关于ruby-on-rai
我有一个如下所示的类:classFooMY_CONST="hello"ANOTHER_CONST="world"defself.get_my_constObject.const_get("ANOTHER_CONST")endendclassBar获取const_get未初始化常量ANOTHER_CONST(NameError)假设我只是在Ruby范围内做一些愚蠢的事情。我目前在测试这段代码的机器上使用Ruby1.9.3p0。 最佳答案 现在工作:classFooMY_CONST="hello"ANOTHER_CONST="world